package 力扣;
//1.     1
//2.     11
//3.     21
//4.     1211
//5.     111221
//第一项是数字 1
//描述前一项，这个数是 1 即 “ 一 个 1 ”，记作 "11"
//描述前一项，这个数是 11 即 “ 二 个 1 ” ，记作 "21"
//描述前一项，这个数是 21 即 “ 一 个 2 + 一 个 1 ” ，记作 "1211"
//描述前一项，这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ，记作 "111221"

public class 外观数列 {
    public static void main(String[] args) {
        String s = countAndSay(4);
        System.out.println(s);
    }
    public static String countAndSay(int n) {
     if (n==1){
         return "1";
     }
        StringBuilder builder = new StringBuilder();
        String s=countAndSay(n-1);
     int pre=0;
     int cur=1;
     for(cur=1;cur<s.length();cur++){
         if (s.charAt(pre)!=s.charAt(cur)){
             int count=cur-pre;
             builder.append(count).append(s.charAt(pre));
             pre=cur;
         }
     }
     //最后一部分全是相同的
        if(pre!=cur){
            int count=cur-pre;
            builder.append(count).append(s.charAt(pre));
        }
        return builder.toString();
    }
}
